package com.tjetc.staticproxy;

import java.util.HashMap;
import java.util.Objects;

public class DatabaseDataQueryProxy implements DataQuery{

    private HashMap<String, String> cache = new HashMap<>(256);

    private DatabaseDataQuery databaseDataQuery;
    // 我们要对原来的被代理类进行缓存增强
    @Override
    public String query(String queryKey) {
        // 1.查询是否击中缓存
        String result = cache.get(queryKey);
        if (Objects.nonNull(result)) {
            System.out.println("走了缓存");
            return result;
        }
        // 2.没有命中缓存,查询数据库
        result = databaseDataQuery.query(queryKey);
        System.out.println("走了数据库库");
        // 3.如果从数据库中查询到了数据
        if (Objects.nonNull(result)) {
            cache.put(queryKey, result);
        }

        return result;
    }

    public DatabaseDataQueryProxy(DatabaseDataQuery databaseDataQuery) {
        this.databaseDataQuery = databaseDataQuery;
    }




}
